Лучший вариант будет это отдельная модель вихря(такие есть даже разных цветов) и триггерное воспроизведение анимации ( если конечно такая есть у юнита).Крепить на героя эффект и наносить урон всем вокруг или через движение дамика- вихря за героем, сам герой не будет крутиться,
Анимации вращения героя есть только у мастера и грома задиры.
триггерное воспроизведение:
call SetUnitAnimation(caster,"Attack Walk Stand Spin")
Реализовать триггерно. Если это не очевидно - значит твои навыки не позволяют сделать этого. Однако спелл простой - поищи где-нибудь в заклинаниях на заказ или на хайве.
1,2 - это вариации одного и того же состояния, а First, Second, Alternate, Gold и прочие - альтернативы, работающие только с использованием данного тега, причем они также могут иметь свои вариации 1,2 и тд.
от того что ты создал нестандартное, почти не имеет веса, вес зависит от количества кода(1 буква гдет 1-2 бит, а в байте 8 бит, а в килобайте 1024 байт) и от объектов созданных на карте(декор эффекты юниты области и тд сколько они весят хз но по моему где то 500-1000 байт) (код в гуй объёмен, содержит лишние проверки if и ненужные вызовы "Функции В Функции")
при загрузки карты она имеет свой стандартный вес(код+импорт+объекты на карте), но в процессе игры могут создаваться новые объекты и тп из за чего карта может лагать у кого слабый комп(он тупо не может обрабатывать всю инфу) Гигамон, возможно в 1 карте ты удалил триг инициализации а в другой нет(стандартный триггер инициализации весь уж точно состоит из 20-30 БЖ функций, которые вызывают другие... я проверял)
Реализовать триггерно. Если это не очевидно - значит твои навыки не позволяют сделать этого. Однако спелл простой - поищи где-нибудь в заклинаниях на заказ или на хайве.
1,2 - это вариации одного и того же состояния, а First, Second, Alternate, Gold и прочие - альтернативы, работающие только с использованием данного тега, причем они также могут иметь свои вариации 1,2 и тд.
Сделай Triggering unit заместо Attacking unit
Главное чтоб условия соблюдались, тогда всё работает.
По такому же принципу делается запрет атаки по союзникам. Можно сделать проверку на процент хп. Что бы нельзя было бить только если у него 50% хп или меньше, если больше то можно.
С юнитами всё работает. Не надо мудрить с процентами. А вдруг крит?
Событие: юнит атакован
Дальше, проверять путь что между атакованным и атакующим является проходимым.
если пусть содержит непроходимости:
Приказать атакующему юниту "Отмена"
напиши создателю mdlvis
если найдёшь его а также у него будут исходники и желание фиксить баги то мб пофиксит
но скорее всего как минимум 2 и 3 пунктов будут отсутствовать
Настройки нужно немного другие, наземные, враги, организмы, нейтральные. Там далеко не так как написано работает фильтр, некоторые критерии работают только совместно. Где то даже была статья как делать такие настройки, чтобы работало только на нужные цели.
Запускать кампанию надо из игры, а не редактора, иначе данные кампании не загружаются. И не сохраняй картинки для Интернета в формате *.bmp, используй *.jpg, либо *.png.
Убери Wait во 2 триггере, во-первых.
В 1 триггере поставь действие TurnOn (включить) триггер 2 (на втором триггере нажми правой кнопкой и выбери изначально включён. У тебя вроде как действие Run, я так понимаю, просто у меня на англ WE.
Во втором триггере поставь событие Время Pereodic 0.02 сек.
Сделай условие, если в точке твоего двигаемого юнита тип проходимости Ходьба, то: дальше выключает этот триггер и делаешь другие свои действия, ьам звук добавляешь и т.д.
А вообще, судя по скринам твоих триггеров, ты ещё очень далёк от создания даже триггерных способностей.
Советую, лучше изучи какие бывают События, Действия и Условия, и что они делают. Мышкоблудка:
Такие сложные вещи лучше наверно на jass делать, хоть это сложнее будет
Ты, конечно, колоссально помог в вопросе, но я открою тебе секрет: ничего тут сложного, на ГУИ изи делается, как и большинство других скилов.
MKDimon, здесь вообще не надо проверять в локал плеере и синхронизировать
я конкретно про то, когда ты проверяешь наличие файла
globals
bolean IHaveConfig=false // булевае данные можно держать асинхронными
endfglobals
-твоя функция начало
if FileExists("config.ini") then
set IHaveConfig=true
else // это можно и не писать
set IHaveConfig=false // хотя он и так false
endif
-конец
И у каждого игрока переменная примет своё значение и это не вызовет никакого десинхрона, каждый игрок будет знать если ли у него конф или нет
Синхронизация нужна, если нужно чтобы игрока Красный, узнал о наличии конфига у игрока Синего
Синхронизировать нужно непостредственно ,то что считывает ReadString, я тебе писал функцию как строковый тип синхронить
синхронизатор целого переделай под стринг или ищи я писал ранее
function SyncInteger takes player p, integer val returns integer
if (GetLocalPlayer() == p) then
call StoreInteger(SyncCache, "", "", val)
endif
call TriggerSyncStart()
if (GetLocalPlayer() == p) then
call SyncStoredInteger(SyncCache, "", "")
endif
call TriggerSleepAction(2)// меньшнее значение вызывает десинх
call TriggerSyncReady()
return GetStoredInteger(SyncCache, "", "")
endfunction
а вообще там 131 патч завезли, в котором есть быстрый синх, а на луа скорее все свои плюшки, мб можно вернуться к прелоаду и не юзать мемхак
Fraps, это просто утечка памяти
десинк вызывают действия происходящие локально (то есть на компьютере 1 игрока они произошли а на компьютере 2 они не происходят)
Событие каждые 1 сек времени
пауза triggering unit
^ Не имеет смысла, здесь нет triggering unit, исправляй, сообщи об изменениях или неизменениях.
У тя там чета про убийства ещё, но спрятать юнит проиграв анимацию смерти не означает его убийство и из группы он не удаляется, если состоит. Так что имей в виду.
GRESHNIK1, я хз как ты пробовал
у меня всё работает нормально
плавающий юнит не может быть создан на суше
у тебя же корабль скорее всего не является плавающим т.е. не является кораблём
Делал из корабля из компании. Просьба залить пример, чтобы понять что я делаю не так.
Точка начала атаки x\y\z - в настройках юнита, по дефолту у многих 0.00, нужно выставлять свои значения методом тыка и смотреть, откуда снаряд вылетел...
1.интерфейс/монстры-возвращение охраны ставь на 10000
2.удаляешь игрока 12 чтобы в игре он незначился а монстров создаёшь для него уже в игре у них недолжна быть прикреплена точка ожидания
3.их надо заставлять переодически двигаться либо всех разом в пределе 5 сек,либо переберая поочерёдно в 0,1сек а если их очень много то 0,05сек
4.то что ты описываешь бывает при очень большом количестве мобов,вариант сделать норм систему где мобы не наваливались волнами на предыдущих адержались определённого кол на карте
ssbbssc, Очистил все реестры от варика их было 3 всех удалил, варик все удалил...
Установил чистый 1.26a 1 гб и запускаю и фигня также осталось невидно эффектов ничего... Думаю пора переустановить виндовс а то мусор много с нуля легче =)
Даже 2012 год так и не решили вопроса 0_О!
если ты играл в карту GTA SAN ANDREAS RUS(www.epicwar.com/maps/231496), то можно было бы взять от туда систему. Карта открывается в редакторе и там используется морф в разные профы с помощью предметов
обычного строителя выбрать нельзя
можно дать строителю способности постройки (игрушечная башня, игрушечный замок и т.д.)
и отлавливать их применение
тогда юнит применивший способность и есть строитель
либо пиши свою систему постройки с бд и проверками на возможность строительства
вот статья по бд
VovkaShyt, будет, хоть 10 хоть 0,01 будет снижаться количеством брони, а эти параметры - снижение от типа брони, сила тьмы игнорирует тип брони, а вот атака героя не игнорирует тип защиты зданий, здания, вспомните как долго в мили картах ломаются здания.
берёшь содержимое бж функций с сайта
и копируешь себе в блокнотик
по поводу русификации копайся в файлах джнгп
мб найдёшь где то файлик с именами
либо сноси свой вар нафиг и ставь англ верию
Близрад да так вставили, шоб не ныли, что там нет вжасса. А подсветку синтаксиса они просто забыли, и им побарабану, если есть вжасс и это пока хватит ширпотребу, т.к. рефорж важнее.
Братиш, мой тебе совет - качай HiveWE для патчей 1.30 и выше.
Я сам разобрался с проблемой. Конечно тут две новые появились, но на них забью уже:
ИИ не нравился герой, из-за него вообще никто не нанимался.
ИИ посчитал, что улучшив главное здание, он лишается главного здания, а значит нужно его снова строить. То есть, например, улучшив ратушу до крепости, он считает, что ратуши больше нет и необходимо построить ещё одну. Потом он крепость улучшит до замка, посчитает, что разрушили крепость, улучшит до крепости ратушу№2, снова потеряет ратушу и построит уже третью.
Да сделай проще. Создай многоуровневую способность-пустышку. и когда отдаешь приказ атаковать в область, давай ему эту способность и с помощью неё отслеживай, какую область атаковать.
Например,
способность уровень 1, значит атаковать должен 1 область.
Уровень 2 - 2 область и т. д.
Не вижу смысла усложнять жизнь с хеш-таблицей.
Надеюсь понятно?) Отдал приказ, присвоил способность, после каста жди пару сек и в зависимости от уровня способности-пустышки отправляй в ту или иную область.
TeX13, можно, сделано в доте для варкравта...
Способов реализации много, от 'ANeg' (способность механика, Enginering Upgrade, рус-Техника), которым можно свапать скиллы, до таймеров которые будут удалять способность у героя а потом вручать ему снова, таким образом скидывая кулдаун, ну и так же хак на пямять, с помощью которого можно менять кулдаун как захочется, щяс все кому не лень юзают эту наработку.
Работай с real (числа с запятой) вместо регионов, занеси в бд или проверяй условиями нужные координаты и выбирай.
Точка не будет утекать, если хранить одну точку в глобальной переменной и для мгновенных операций перемещать ее и использовать дальше по назначению.
В шапку над триггерами вставляешь этот код:
function RegionInit takes nothing returns nothing
//17/11/2016
set udg_GL = Location(0.0, 0.0)
set udg_RegionNumber = GetRandomInt(1, 4) // выбрать количество регионов
set udg_RegionX1 = GetRectMinX(udg_Region[udg_RegionNumber])
set udg_RegionY1 = GetRectMinY(udg_Region[udg_RegionNumber])
set udg_RegionX2 = GetRectMaxX(udg_Region[udg_RegionNumber])
set udg_RegionY2 = GetRectMaxY(udg_Region[udg_RegionNumber])
endfunction
Создаешь глобальные переменные типа:
точка с названием GL
регион массив с названием Region
целочисленная с названием RegionNumber - для хранения номера выбранного региона
реальное число с названиями RegionX1, RegionX2, RegionY1, RegionY1 - для хранения координат выбранного региона
После действий на картинке в инициализацию вставляешь кастом скрипт:
call RegionInit()
Перед каждым созданием юнита вставляешь кастом скрипт:
циклом (данного юнита от 1-6 слотов, на jass от нумерация слотов начинается так 0-5) пробегаешься по каждому слоту и проверяешь тип, кол-во зарядов. я на гуи что-то не нашел эту команду UnitItemInSlot
native UnitItemInSlot takes unit whichUnit, integer itemSlot returns item
кол-во итемов
ищем в каждом слоте один и тот же тип предмета. Этот код считывает кол-во итемов занимаемые в слотах
local integer id = ''//id-предмета, забудь указать в кавычках ид
local integer i=0 //для цикла
local integer c=0 //кол-во предметов
local unit u = //нужно не забыть указать юнита
//внизу начинается цикл, его блок
loop //начало цикла
exitwhen i > 5 //условие выхода из цикла
if GetItemTypeId(UnitItemInSlot(u,i)) == '' then //если тип в слоте равен ....
set c = c + 1
endif
set i = i + 1
endloop //конец цикла
кол-во предметов данного типа с N зарядами
local integer id = '' //id-предмета, забудь указать в кавычках ид
local integer i=0 //для цикла
local integer c=0 //кол-во предметов
local unit u = //нужно не забыть указать юнита
loop
exitwhen i > 5
if GetItemTypeId(UnitItemInSlot(u,i)) == id or GetItemCharges(UnitItemInSlot(u,i)) == 5 then //если тип в слоте такой, и и у этого итема зарядов равно 5
set c = c + 1
endif
set i = i + 1
endloop
set u = null
Да сделай проще. Создай многоуровневую способность-пустышку. и когда отдаешь приказ атаковать в область, давай ему эту способность и с помощью неё отслеживай, какую область атаковать.
Например,
способность уровень 1, значит атаковать должен 1 область.
Уровень 2 - 2 область и т. д.
Не вижу смысла усложнять жизнь с хеш-таблицей.
Надеюсь понятно?) Отдал приказ, присвоил способность, после каста жди пару сек и в зависимости от уровня способности-пустышки отправляй в ту или иную область.
» WarCraft 3 / Анимация
» WarCraft 3 / Нестандартный размер карты ?!
» WarCraft 3 / Название анимаций
» WarCraft 3 / Обзор карты.
» WarCraft 3 / Запретить атаковать
» WarCraft 3 / Ошибка в mdlvis...
» WarCraft 3 / SetItemCharges 0 - багает предмет
» WarCraft 3 / Проблема с моделью
» WarCraft 3 / Как добавить способности оглушение
» WarCraft 3 / IF проверка
» WarCraft 3 / Музыки нет.
» WarCraft 3 / Врождённая способность
» WarCraft 3 / Вопрос по хэш-таблице.
» WarCraft 3 / Триггер на призыв
» WarCraft 3 / Настройка атаки
» WarCraft 3 / Триггер на ворота
» WarCraft 3 / Как сделать морф героя в другого? [лучший способ]
» WarCraft 3 / Редактор, Свойства игрока.
» WarCraft 3 / Как выбрать цвет юнита?
» WarCraft 3 / Таблица типов урона и атаки
» WarCraft 3 / Подсветка в JNGP
» WarCraft 3 / Триггеры. Волны врагов.
» WarCraft 3 / Уменьшение перезарядки
» WarCraft 3 / Юниты нейтралы не достигают цели
» WarCraft 3 / Волны врагов